package com.naiterui.common.repository.hibernate;

import java.io.Serializable;
import java.util.List;

import com.naiterui.common.repository.page.Page;

/**
 * 由于历史原因，之前的ehp-dao库中封装了一些方法，其泛型定义在了方法上，
 * 导致通过这些方法可以查询任意实体，或者是投影查询
 * 为了支持这些操作保证在更换ehp-dao库中各业务服务的改动量最小
 * 因此引入了该实现类，用于兼容各个业务服务中的使用
 * @author zhouyanxin
 * @since 1.0.0
 */
@Deprecated
public class CompatibleBaseDaoImpl<T, ID extends Serializable> extends DefaultBaseDaoImpl<T, ID> {

    /**
     * 加载任意对象
     * CompatibleBaseDaoImpl.load()
     * @Author zhouyanxin
     * @Date 2018年5月21日
     * @since 1.0.0
     * @param entityClass
     * @param id
     * @return
     */
    @Deprecated
    public <E> E load(Class<E> entityClass, Serializable id) {
        return super.hibernateTemplate.load(entityClass, id);
    }

    /**
     * 获取任意对象
     * CompatibleBaseDaoImpl.get()
     * @Author zhouyanxin
     * @Date 2018年5月21日
     * @since 1.0.0
     * @param entityClass
     * @param id
     * @return
     */
    @Deprecated
    public <E> E get(Class<E> entityClass, Serializable id) {
        return super.hibernateTemplate.get(entityClass, id);
    }

    /**
     * 支持任意实体的分页查询方法
     * CompatibleBaseDaoImpl.pagedQueryAny()
     * @Author zhouyanxin
     * @Date 2018年5月21日
     * @since 1.0.0
     * @param hql
     * @param pageNo
     * @param pageSize
     * @param values
     * @return
     */
    @Deprecated
    public <E> Page<E> pagedQueryForAny(String hql, int pageNo, int pageSize, Object... values) {
        return super.pagedQueryOffsetForAny(hql, pageNo, pageSize, 0, values);
    }

    /**
     * 通过HQL查询任意实体集合
     * CompatibleBaseDaoImpl.findAny()
     * @Author zhouyanxin
     * @Date 2018年5月21日
     * @since 1.0.0
     * @param hql
     * @param values
     * @return
     */
    @Deprecated
    public <E> List<E> findForAny(String hql, Object... values) {
        return super.findForAny(hql, 0, 0, null, values);
    }
}
